prepare-root: Add a comment about the role of this service
authorColin Walters <walters@verbum.org>
Thu, 20 Feb 2020 00:33:01 +0000 (00:33 +0000)
committerColin Walters <walters@verbum.org>
Thu, 20 Feb 2020 00:35:32 +0000 (00:35 +0000)
Came up on an IRC question, docs for this are scattered around.

src/switchroot/ostree-prepare-root.c

index 33c46ff45c7c588dc831ef420e30a51c9944f8e3..c25d3fe9aba0eb868ed5c5fa201a52964dfd8172 100644 (file)
  * Boston, MA 02111-1307, USA.
  */
 
+/* The high level goal of ostree-prepare-root.service is to run inside
+ * the initial ram disk (if one is in use) and set up the `/` mountpoint
+ * to be the deployment root, using the ostree= kernel commandline
+ * argument to find the target deployment root.
+ *
+ * It's really the heart of how ostree works - basically multiple
+ * hardlinked chroot() targets are maintained, this one does the equivalent
+ * of chroot().
+ *
+ * If using systemd, an excellent reference is `man bootup`.  This
+ * service runs Before=initrd-root-fs.target.  At this point it's
+ * assumed that the block storage and root filesystem are mounted at
+ * /sysroot - i.e. /sysroot points to the *physical* root before
+ * this service runs.  After, `/` is the deployment root.
+ *
+ * There is also a secondary mode for this service when an initrd isn't
+ * used - instead the binary must be statically linked (and the kernel
+ * must have mounted the rootfs itself) - then we set things up and
+ * exec the real init directly.  This can be popular in embedded
+ * systems to increase bootup speed.
+ */
+
 #include "config.h"
 
 #include <sys/mount.h>